約 1,522,822 件
https://w.atwiki.jp/peacarun/pages/15.html
ポイント計算 チームの累計ポイントはチームメンバーの個人ポイントを合計したものになります。 個人ポイントは装備する武器ごとに計算し、裏表2つの武器のポイントを合わせた値を使用します。 武器のカテゴリ 近接武器カテゴリランス以外の近接武器 ランス 弓・クロスボウカテゴリ弓・クロスボウ アイス系ワンドカテゴリアイス系ワンド ヒーリング系ワンド ファイア系ワンドカテゴリファイア系ワンド ヒーリング系ワンド ライトニング系ワンドカテゴリライトニング系ワンド ヒーリング系ワンド 打撃ワンドカテゴリ打撃ワンド ヒーリング系ワンド スタッフカテゴリトリニティスタッフ シリンダーカテゴリノーマルシリンダー ウォーター系シリンダー ファイア系シリンダー ウィンド系シリンダー アース系シリンダー タワーシリンダー !!同カテゴリの武器を裏表に装備する場合!! この場合、裏表の武器におけるポイントを計算し、低い方のポイントを50に置き換えて計算します。 例1:表にエルブンショートボウ(264PT)・裏にウィングボウ(227PT)の場合、264+50=314PT 例2:表にウォーターシリンダー(204PT)・裏にボルケーノシリンダー(328PT)場合、50+328=378PT なお、カテゴリはあくまで上記の通りpeacarun独自の分類に従います。 例3:表に打撃ワンド(450PT)・裏にファイアワンド(240PT)の場合、450+240=690PT
https://w.atwiki.jp/nlabgaussian/pages/17.html
計算 1.計算の目的の決定 何が知りたいかを考え、目的にあった計算方法を選択する。 2.分子構造の構築 GaussViewを用いて目的化合物の構造を構築する。 3.計算条件 GaussViewまたは直接、計算条件を入力する。 計算原理 Hartree-Fock法(HF) 電子相関 HF法では電子を空間に広がった電場として考慮するため、電子同士の反発を考慮するしていない。そのため、厳密な電子のエネルギーよりも大きく見積もってしまう。このエネルギーの差を電子相関という。 密度汎関数法(DFT) 密度汎関数 B3LYP M06 基底関数 Pople系基底関数 3-21G、6-31+G、6-31+G*のように 表現する。 分極関数 Diffuse関数 4.計算の実行 Gaussian09を用いて計算を実行する。 5.結果の解析 計算の出力データから計算の結果を確認する。 GaussViewで可視化できるもの 構造最適化された分子構造 各種分子軌道 計算された様々な密度の電子密度表面 静電ポテンシャル表面 磁気特性の表面 表面の等高線表示 原子の荷電と双極子モーメント 振動周波数に対応する基準モードのアニメーション IR、ラマン、NMR、VCD およびその他のスペクトル 分子の立体化学情報 構造最適化のアニメーション、IRC 反応経路追跡、ポテンシャルエネルギー面の走査、ADMP および BOMD 軌道。2変数の走査では、3D プロットとして表示可能。 上述の計算内容(構造最適化、IRC など)において得られる全エネルギー変化や各データのプロット 引用 https //www.hulinks.co.jp/software/chem/gaussview ファイルの拡張子について .gjf Gaussian Input File。入力ファイルの拡張子 .chk Check Point File。計算を行った時に出力されるファイル。GaussViewで開くと分子軌道等も描写することができる。 .log 計算の出力ファイル(Gaussian Output File)。計算の結果を出力する。計算にエラーが出た時はここはじめに確認する。
https://w.atwiki.jp/parallel_calculation/pages/11.html
準備中
https://w.atwiki.jp/srpg_arekore/pages/18.html
計算式 Ver1.120時点でのsingleton-calculatorの内容。 この辺り、公式でも解説はしているのですがいかんせんざっくりしすぎているので…… 書き換え方はこちらを参照。 随時更新中。 計算式AbilityCalculatorgetPower getHit getAvoid getCritical getCriticalAvoid getAgility DamageCalculatorcalculateDamage HitCalculator CriticalCalculator CalculatorcalculateRoundCount calculateRecoveryItemPlus calculateSellPrice SupportCalculatorcreateTotalStatus CompatibleCalculator ExperienceCalculator_getExperienceFactor _getNoDamageExperience _getVictoryExperience _getNormalValue _getExperience ExperienceControl ParameterControl SymbolCalculator AbilityCalculator ユニットの戦闘に関わる数値の計算を行う。 getPower ユニットの攻撃力を計算する。 ユニットの力か魔力に武器攻撃力を追加するという内容。 変更例 AbilityCalculator.getPower = function(unit, weapon) { var pow; if (weapon.custom.waza) { if (Miscellaneous.isPhysicsBattle(weapon)) { // 物理攻撃または投射攻撃 pow = RealBonus.getStr(unit); } else { // 魔法攻撃 pow = RealBonus.getMag(unit); } } else { // 技の武器 pow = RealBonus.getSki(unit); } // 武器の威力 + (力 or 魔力 or 技) return pow + weapon.getPow(); }; カスパラ「waza」がtrueの武器を装備中の場合は(力or魔力)の代わりに技を加算する。 getHit ユニットの命中率を計算する。 武器の命中率 + (ユニットの技 * 3)。 return(そこで処理を終了させて呼び出し元の処理に数値を返す)の中で計算している。 これをどうするか。 変更例1 AbilityCalculator.getHit = function(unit, weapon) { // 武器の命中率 + (技 * 3) + 幸運 return weapon.getHit() + (RealBonus.getSki(unit) * 3) + RealBonus.getLuk(unit); }; デフォルトの計算式にユニットの幸運の加算させたもの。 変更例2 AbilityCalculator.getHit = function(unit, weapon) { var hit; // 武器の命中率 hit += weapon.getHit(); // ユニットの技*3 hit += RealBonus.getSki(unit) * 3; // ユニットの幸運 hit += RealBonus.getLuk(unit); return hit; }; 例1の計算式を変数hitを宣言(var)した上でhitに計算した値をまとめていく方法。returnの中で計算を済ませることもできるが、複雑な計算の場合は見た目が非常に散らかってしまい、後から確認する時に大変な思いをすることになるだろう。 getAvoid ユニットの回避率を計算する。 引数(functionの中のパラメータ)にユニットのクラスが存在しないため、 この処理の中でクラスを呼び出しているのがポイント。 変更例1 AbilityCalculator.getAvoid = function(unit) { var avoid, terrain; var cls = unit.getClass(); // 回避は、(速さ * 2) avoid = RealBonus.getSpd(unit) * 2; // クラスの回避率 if (typeof cls.custom.kaihi === 'number') avoid += cls.custom.kaihi; } // クラスタイプが地形ボーナスを考慮する場合は、「地形効果」の回避率を加算する if (cls.getClassType().isTerrainBonusEnabled()) { terrain = PosChecker.getTerrainFromPos(unit.getMapX(), unit.getMapY()); if (terrain !== null) { avoid += terrain.getAvoid(); } } return avoid; }; クラス(cls)のカスパラ「kaihi」に数値が設定されている場合はkaihiの数値分回避率が上昇する。 変更例2 AbilityCalculator.getAvoid = function(unit) { var avoid, terrain; var cls = unit.getClass(); var weapon = ItemControl.getEquippedWeapon(unit); if (weapon === null) { // 武器を装備していない場合の回避は、(速さ * 2) avoid = RealBonus.getSpd(unit) * 2; } else { // 武器を装備している場合の回避は、(敏捷 * 2) avoid = AbilityCalculator.getAgility(unit, weapon) * 2; } // クラスタイプが地形ボーナスを考慮する場合は、「地形効果」の回避率を加算する if (cls.getClassType().isTerrainBonusEnabled()) { terrain = PosChecker.getTerrainFromPos(unit.getMapX(), unit.getMapY()); if (terrain !== null) { avoid += terrain.getAvoid(); } } return avoid; }; 武器を所持している場合は敏捷(つまり武器の重さによる減算が発生した後の数値)を回避率の計算に使う。ここで気をつけたいのが「攻撃力」「命中率」「必殺率」は武器を所持していない状態(つまり攻撃できない状態)ならそれらの計算に入ることはないが、「回避率」と「必殺回避率」と「敏捷」の計算は武器を持っていなくても行われるということ。つまりこれらの計算時に武器を参照する場合は武器を所持しているかどうかをチェックする必要がある。敏捷はデフォルトで武器を所持していない場合の分岐を用意しているが、回避率と必殺回避率の処理で武器を扱う際にこのチェックを怠ると、僧侶などの武器を持たない非戦闘ユニットのステータスを開いただけでエラーを起こすようになるので注意。 getCritical ユニットの必殺率を計算する。 変更例 AbilityCalculator.getCritical = function(unit, weapon) { var crt; var cls = unit.getClass(); // 技 crt += RealBonus.getSki(unit); // 武器のクリティカル率 crt += weapon.getCritical(); // クラスのクリティカル率 crt += cls.custom.hissatu; return crt; }; クラス(cls)のカスパラ「hissatu」に数値が設定されている場合はhissatuの数値分必殺率が上昇する。 getCriticalAvoid ユニットの必殺回避率を計算する。 変更例 AbilityCalculator.getCriticalAvoid = function(unit) { // (幸運/2)がクリティカル回避率 return Math.floor( RealBonus.getLuk(unit) / 2 ); }; 幸運の半分の値が必殺回避率になる。Javascriptで除算を行う場合はMath.○○を用いて小数点以下を丸めて整数にする作業が必須。うっかり小数点のまま処理を進めたりすると数字が表示されなくなったりフリーズを引き起こす要因になる。SRPG Studioでは基本的にMath.floorを使う。 Math.round(丸めたい数値) 四捨五入 Math.ceil(丸めたい数値) 切り上げ Math.floor(丸めたい数値) 切り捨て getAgility ユニットの敏捷(戦闘時の素早さ)を計算する。 これまでと比べると複雑な分岐を行っている。 変更例 AbilityCalculator.getAgility = function(unit, weapon) { var agi, value, param; var spd = RealBonus.getSpd(unit); // 通常、敏捷は速さと同一 agi = spd; // 武器が指定されてない場合、または重さを考慮しない場合は、敏捷は変わらない if (weapon === null || !DataConfig.isItemWeightDisplayable()) { return agi; } // 体格が有効な場合は体格で判定し、そうでない場合は力(魔力)で判定する if (DataConfig.isBuildDisplayable()) { param = ParamBonus.getBld(unit); param += Math.floor(ParamBonus.getStr(unit)/2); } else { param = ParamBonus.getStr(unit); } // 重さ - パラメータ value = weapon.getWeight() - param; if (value 0) { // パラメータが重さより低い場合は、その差分だけ敏捷を下げる agi -= value; } return agi; }; 魔法武器なら魔力で武器の重さを相殺するところを魔法武器でも力で相殺するように固定化している。体格が有効になっている場合は(体格+力の半分)で相殺を行う。 DamageCalculator 実際の戦闘におけるダメージ計算。 calculateDamage クリティカル時の処理を行う部分。 変更例1 DamageCalculator.calculateDamage = function(active, passive, weapon, isCritical, activeTotalStatus, passiveTotalStatus, trueHitValue) { var pow, def, damage; var crtdamage = 0; if (this.isHpMinimum(active, passive, weapon, isCritical, trueHitValue)) { return -1; } pow = this.calculateAttackPower(active, passive, weapon, isCritical, activeTotalStatus, trueHitValue); def = this.calculateDefense(active, passive, weapon, isCritical, passiveTotalStatus, trueHitValue); damage = pow - def; if (this.isHalveAttack(active, passive, weapon, isCritical, trueHitValue)) { if (!this.isHalveAttackBreak(active, passive, weapon, isCritical, trueHitValue)) { damage = Math.floor(damage / 2); } } if (this.isCritical(active, passive, weapon, isCritical, trueHitValue)) { if (SkillControl.getBattleSkill(active, passive, SkillType.CRITICAL)) { crtdamage = 1; } damage = Math.floor(damage * (this.getCriticalFactor() + crtdamage)); } return this.validValue(active, passive, weapon, damage); }; 「クリティカル可能」スキルを所持しているユニットはクリティカル時のダメージ倍率が+100%される。DamageCalculator.getCriticalFactor()はツール側で設定されたクリティカル時のダメージ倍率を取得する関数。 変更例2 DamageCalculator.calculateDamage = function(active, passive, weapon, isCritical, activeTotalStatus, passiveTotalStatus, trueHitValue) { var pow, def, damage; var crtdamage = Math.floor(Math.random() * 15) + 5; if (this.isHpMinimum(active, passive, weapon, isCritical, trueHitValue)) { return -1; } pow = this.calculateAttackPower(active, passive, weapon, isCritical, activeTotalStatus, trueHitValue); def = this.calculateDefense(active, passive, weapon, isCritical, passiveTotalStatus, trueHitValue); damage = pow - def; if (this.isHalveAttack(active, passive, weapon, isCritical, trueHitValue)) { if (!this.isHalveAttackBreak(active, passive, weapon, isCritical, trueHitValue)) { damage = Math.floor(damage / 2); } } if (this.isCritical(active, passive, weapon, isCritical, trueHitValue)) { if (SkillControl.getBattleSkill(active, passive, SkillType.CRITICAL)) { crtdamage = 5; } damage += crtdamage; } return this.validValue(active, passive, weapon, damage); }; クリティカル時のダメージの計算が「ダメージ×3」から「ダメージ+5~20の乱数」に変わる。 「クリティカル可能」スキルを所持しているユニットはクリティカル時のダメージが更に+5される。 ツール側のクリティカル時のダメージ倍率の設定は使用されなくなる。 HitCalculator 実際の戦闘における攻撃命中判定処理。 CriticalCalculator 実際の戦闘におけるクリティカル判定処理。 Calculator 戦闘関係、アイテム関係などその他諸々の計算。 calculateRoundCount 再攻撃可能かどうか判定する。 変更例 Calculator.calculateRoundCount = function(active, passive, weapon) { var activeAgi; var passiveAgi; var value; if (!this.isRoundAttackAllowed(active, passive)) { return 1; } activeAgi = AbilityCalculator.getAgility(active, weapon); passiveAgi = AbilityCalculator.getAgility(passive, ItemControl.getEquippedWeapon(passive)); value = this.getDifference(); //「再攻撃」を持っていれば再攻撃差分変更 if (SkillControl.getBattleSkill(active, passive, SkillType.ROUNDATTACK){ value = 1; } return (activeAgi - passiveAgi) = value ? 2 1; }; 「value = this.getDifference();」がツール側で設定した「再攻撃差分」の数値なので、 攻撃側が「再攻撃」のスキルを持っている場合は再攻撃差分が1に変更されるように。 calculateRecoveryItemPlus 回復アイテムの補正を計算する。 デフォルトでは回復アイテムが杖だった時に使用者の魔力を回復値に加算する処理のみ。 変更例 Calculator.calculateRecoveryItemPlus = function(unit, targetUnit, item) { var plus = 0; var itemType = item.getItemType(); if (itemType !== ItemType.RECOVERY itemType !== ItemType.ENTIRERECOVERY) { return 0; } // アイテムが杖の場合は、使用者の魔防力を加算する if (item.isWand()) { plus = ParamBonus.getMdf(unit); } return plus; }; 魔力の代わりに魔防力を回復値に追加するようにする変更。 杖使いと魔法使いをより差別化したい時に。 calculateSellPrice 店でアイテムを売却する時の値段の計算。 変更例 Calculator.calculateSellPrice = function(item) { var d; var gold = Math.floor(item.getGold() / 4); return gold; }; 耐久力で売却価格が変動する処理を廃し、売却価格を「買値の1/4の値段」で固定する。 SupportCalculator 支援効果の計算。 createTotalStatus 各種支援効果の配列を作成し、総合する部分。 変更例 var alias1 = SupportCalculator.createTotalStatus; SupportCalculator.createTotalStatus = function(unit) { var i, x, y, index, targetUnit, unitType, list, indexArray, count; var totalStatus = {}; totalStatus.powerTotal = 0; totalStatus.defenseTotal = 0; totalStatus.hitTotal = 0; totalStatus.avoidTotal = 0; totalStatus.criticalTotal = 0; totalStatus.criticalAvoidTotal = 0; if (!SkillControl.getPossessionCustomSkill(unit,'noSupport')) { totalStatus = alias1.call(this, unit); } return totalStatus; } キーワード「noSupport」のカスタムスキルを所持しているユニットは一切の支援効果を受けられなくなる。 破壊できる壁などの障害物が支援スキルの影響を受けるのを無効化できる。 CompatibleCalculator 武器の有効相手(いわゆる三すくみ)の補正計算。 ExperienceCalculator 取得経験値の計算を行う。 _getExperienceFactor 取得経験値に対して補正をかける。 優先順位は「経験値上昇」スキルによる補正倍率>難易度設定による2倍効果となっており、 「経験値上昇」スキルを所持している場合は難易度設定による2倍効果は無効化される。 _getNoDamageExperience ダメージを与えられなかった時の取得経験値。 baseExpの5を基礎値とする。 ここを0に変えればダメージを与えられなければ経験値が入らないことになる。 (ただしgetExperienceのレベル差補正も修正する必要あり) _getVictoryExperience 敵を撃破できた時の取得経験値。 難易度設定による基礎経験値が使用される。 _getNormalValue ダメージは与えたが敵を撃破できなかった時の取得経験値。 baseExpの8を基礎値とする。 ここを0に変えれば敵を撃破できないと経験値が入らないことになる。 (ただしgetExperienceのレベル差補正も修正する必要あり) _getExperience 戦闘における最終的な取得経験値を割り出す。 味方ユニットと敵ユニットのレベル差、クラスランクによって修正が入る。 ExperienceControl レベルアップ時の成長処理などを行う。 ParameterControl レベルアップ時にステータスを上昇させる処理。 SymbolCalculator クラスチェンジやフュージョンなどの許可判定、イベントなどのステータス条件判定の計算を行う部分。
https://w.atwiki.jp/blackjackwiki/pages/20.html
計算プログラム 以下の2つのプログラムをオンラインでの仕様に変更。 エンチャ総確率計算プログラム ★ よく使うのに暗算では意外とめんどうな計算. OPR期待値計算プログラム ★ 任意のOP数値を得るために必要な,OPRの総費用を計算する. 1.装備する部分とOP数を選択式にしてOPレベルと期待する数値(x以上)を直接入力で取得する. 2.1回あたりのOPR費用を直接入力で取得する. 3.任意のOPがつく確率と任意の数値以上がつく確率を求める. 4.OPR成功確率50%として,3の確率と1回あたり費用で,総費用を計算して出力する. あらかじめ装備する部分につくOP数データと,OP数値幅データが必要. 数値幅はエンチャント数値表から外部ファイルで.datを作ってそこから関数で取得すればおk. フローチャート ファイル:エンチャント数値幅.dat 選択n:緑1、青2、黄3、赤4 選択m:武器12、耳指輪8、頭6、トップスボトムス手袋靴7、眼鏡ストビンディ7、精霊石16 選択o[]:任意のステ配列o[3](初期化必須) 取得l:数値l以上 取得cost:1回あたりの費用 ↓ n = 実際のOP数、 m = 可能なOP数 o[] = 選択したデータの数値上限lmをファイルから返すループ、 選択上限数nまでループで数をr、0以下か超えていたらエラー、非選択エンターは残りをNULL、 l が0未満または数値幅longの上限値lmを超えていたらエラー、ループでl上限値までの数をdiff ↓ 任意のOP確率probの計算 prob = nCr*diff / mCr*long ↓ 固定成功確率spも考慮した総費用Σcostの計算 Σcost = cost * (100/prob) * (100/sp)
https://w.atwiki.jp/unseen/pages/175.html
ギャラドス 基本情報 HP130 タイプ 水 ワザ)− テールリベンジ 自分のトラッシュの「コイキング」の数×30ダメージ。 ワザ)水無 あばれまくる 40 ウラが出るまでコインを投げ続け、オモテの数ぶんのカードを、相手の山札の上からトラッシュ。 ワザ)水水無無無 ドラゴンビート 100 コインを1回投げオモテなら、相手のポケモン全員から、エネルギーをそれぞれ1個ずつトラッシュ。 弱点:雷+30 抵抗力:闘-20 にげる:無無無 考察 水タイプの1進化ポケモン。1進化にして2進化水準のHPと豪快なワザが魅力。 ワザ「テールリベンジ」はエネルギーを使わずに90ダメージを叩き出せる破格のコストパフォーマンス。一応、ガブリアスLV.Xを使えば120ダメージを与えることも可能だがあまり現実的ではない。 90ダメージを出すための挙動としては、スージーの抽選やレジアイス(DP5)を使うと素早くトラッシュにコイキングをためられる。レジアイスはコイキングと共にポケモンコレクターで手札に呼び込めるので好相性。 ワザ「あばれまくる」は相手のデッキを削ることができるが、ダメージが40と少なめに設定されているため使いづらい。 ワザ「ドラゴンビート」は相手のポケモン全員からエネルギーをトラッシュするという派手なもの。 ワザとして肝心なダメージ自体は100と控えめな印象。「テールリベンジ」での90ダメージと「ドラゴンビート」の100ダメージで1撃で倒せるポケモンの範囲は大差ない。 そのため、このワザを使う時は必然的に相手の場のエネルギーを一掃したい時となるわけだが、エネルギーを5枚も使ってまでそうしたい状況には出会いづらい。 3つのワザはどれも派手さがあって面白いのだが、安定して戦うのならエネルギーの必要のない「テールリベンジ」に頼るのがベストか。
https://w.atwiki.jp/unseen/pages/95.html
ヤミラミ 基本情報 HP60 タイプ 悪 たね ポケボディー)いさみあし 対戦のスタートのとき、オモテにしたバトルポケモンがこのポケモンなら、ジャンケンで負けていても、このポケモンの持ち主が先攻になる。(相手のバトルポケモンも「いさみあし」を持っているなら、このボディーははたらかない。) ワザ)− ひとまね 自分の山札の「サポーター」を1枚トラッシュし、山札を切る。その後、トラッシュしたカードの効果を、このワザの効果として使う。 ワザ)悪 ずにのる 10 相手の残りHPが、自分よりすくないなら、このワザのダメージは「40」になる。 弱点 なし 抵抗力 無色-20 にげる 無 考察 ワザ「ひとまね」でデッキを回すこともできるが、「ずにのる」で相手をきぜつさせることもできる。 ポケボディーの「いさみあし」と相俟って、先攻から40ダメージを出せるのは非常に強力。悪タイプのポケモンなので悪の特殊エネルギーをつけることでワザのダメージを増すこともできる。 「ずにのる」の性質上たつじんのおびと相性が良い。自分がダメージを受けていなければ、悪の特殊エネルギーをつけることで、残りHPが70以下のポケモンを一撃で倒せる。 クロバットGなどのワザ以外でダメージを与えるカードと組み合わせることで一撃で倒せる範囲がさらに広がる。
https://w.atwiki.jp/unseen/pages/56.html
3エネと重いもののマンムーに思い出のみをつければはっぷんで非常に固くなる上出力もかなりのもの
https://w.atwiki.jp/ssb4_kensyou/pages/115.html
注意書き ふっとばし力(KB)KB簡易版 WBKB版 ふっとび硬直 ガード硬直 ガードノックバック OP相殺 ヒットストップ 相殺 しびれ 埋められ スマッシュホールド 崖掴まり時間 つかみ時間 ピクミン投げ ウィッチタイム 参考 コメント 計算式たちのまとめ。 個別ページがある式はそちらも読むべし。 載せてほしい式があればコメントにてお知らせください。 注意書き 時間の単位は全てフレーム(F)。 フレームの計算で小数点以下が出てきた場合、計算の最後に切り捨て。ふっとばし力などは小数点以下まで計算。 ふっとばし力(KB) KB = [ 0.07 * (A'+ 2) * 敵%/W' * KBG/100 + BKB ] * Rage * Mult. KB簡易版 WBKB版 通常の式で A=WBKB、D_o=10 としたもの。 ふっとび硬直 回避40F帯、攻撃45F帯はこの限りではない。 ガード硬直 j ジャストシールド判定。ジャスガなら0.5、それ以外なら1。 p:飛び道具判定。飛び道具なら0.66、それ以外なら1。 ガードノックバック Pushback≦1.318%の攻撃で1.2996。 ジャストシールド、飛び道具は未検証。 OP相殺 1回前に使っていればS1、2回前に使っていればS2…を加えていく。 ヒットストップ Hitlag≦30 A:ダメージ h:HS補正値 c:しゃがみ状態なら0.67、それ以外は1防御側のみにかける。攻撃側は常に1。 e:電撃属性なら1.5、それ以外は1 解析値上は「÷2.6」ではなく「×0.3846154」である。 ガードストップの計算は、 HS補正値 ≦1 → h = HS補正値 1 ≦ HS補正値 ≦1.25 → h = 1 1.25 ≦ HS補正値 → h = HS補正値×0.8 とする。 相殺 A:ダメージ ダメージは大きい方を参照する。 しびれ Paralyze≦76 A:ダメージ h:HS補正値 c:しゃがみ状態なら0.67、それ以外は1 埋められ スマッシュホールド A:元のダメージ F:ホールドフレーム0≦F≦60 崖掴まり時間 20≦Ledge≦124 F:滞空フレーム0≦F≦300 攻撃を受けるとリセット。 D:自%0≦D≦120 つかみ時間 P:蓄積% i:レバガチャスティック:8 ボタン:14.4 ピクミン投げ D:蓄積% i:レバガチャスティック:7 ボタン:12.5 ウィッチタイム 通常版 バットウィズイン発動版 30≦WT≦240 D:相手% n:WT使用回数 x:回復フレーム n,xは効果時間が完全回復したらリセット。 効果時間中、相手はスロー1/8。 参考 ゲガン氏:http //sixriver.web.fc2.com/ssb4/memo.htm KH氏:http //kuroganehammer.com/Smash4/Formulas 解析値:https //docs.google.com/spreadsheets/d/1FgOsGYfTD4nQo4jFGJ22nz5baU1xihT5lreNinY5nNQ/edit#gid=425729403 コメント 名前 コメント
https://w.atwiki.jp/mblen/pages/49.html
Summary. ダメージ計算の基本ルールについて解説してみます。ただし、話を簡単にするためにクリティカルの影響は無視します(いずれやるかも)。 始める前に 計算対象 当たり前ですが、コンボの合計ダメージは 1hit目のダメージ + 2hit目のダメージ + ・・・ と計算するして求めることになります。そこで、「一撃ごとのダメージ」の計算方法を主に考えることにします。 略語 ところで、解説中に『Aの小数点以下を切り捨てたものをBとする』と繰り返し何度も書くのはかったるいですし、読む方もダルいと思うので、大幅に略して B := int(A) と書きます。たとえば、int(80.2) = 80です。あと、ReversePenalty補正を略して『RP補正』と呼びます。 注意 計算式の中に出てくる各種補正の値は原則として その技が当たる直前までの値 を使って計算されます。これについては多少の例外もありますが、詳しくは後述します。 基本計算式 大まかにいうと、下の囲みの順番に計算していって最後に出た数字がダメージです。 A = int(攻撃力×防御係数) B = int(A×ヒット数補正) C = int(B×技補正) ダメージ = int(C×状態補正) ただし、 AAのヒスコハがやられ役の場合 に限ってはこの後に『ヒスコハ補正』が掛かります。 この場合は、最後に ダメージ×1.035 を計算して端数を切り捨てます。[1] ともあれ、適当に端数を切り捨てながら順番に掛け算を繰り返していけばOKです。 先に注意した通り、ヒット数などはこの段の攻撃が当たる前までの値を使います。ただし、場合によっては上の計算に先駆けて補正値の変更が発生します: 例外1a. RP補正 もしRP補正が0%でないならば、 上の計算の直前に (100 - int(RP補正)) % の上書き補正 を実行します。タイミングが変則的なので気をつけてください。なお、シールド補正もRP補正の一種です。 例外1b. 引き剥がし補正 ReACT属性の攻撃で相手を引き剥がした場合、 RP補正適用の直後(本来の技補正の適用前) に65%の乗算補正が発生します。これまたわかりづらいタイミングなので注意です。 例外2. EX補正 EXキャンセルをした場合、その瞬間に65%の乗算補正が発生します。 例外3. 状態変化 たとえば、レンの地上投げ・空中投げは 実際の相手の状態には関係なく、必ずSTAND時の状態補正を用いて計算 されます。同様に、FLOAT時の状態補正を用いる技も他キャラには存在します。これらは、実際に相手の状態を変化させていると考えてください[2]。 例外4. レデュースダメージ MBACとMBAAで仕様が異なります。 (a) MBACでは、レデュースに成功した場合、この段の計算に限り 技補正の代わりに、技補正×0.7を用いる ことになります。この影響は今回限りなので、補正値への影響は生じません。 (b) MBAAでは、レデュースに成功した場合、普通にダメージを計算した後に ダメージを0.7倍して端数を切り捨てる という処理が追加されます。 補正値の更新 上の要領でダメージの算出が済んだ後は、各種補正の更新作業に入ります。 まず、(当然ですが)ヒット数が1増えるのに伴い、ヒット数補正が変化します。[3] 同様に、HPの減少に伴って根性値が変化するかもしれません。その場合は防御係数も変化します。 そして、当てた技に応じて技補正が更新されます。 3番目の「技補正の更新」は、当てた技の補正の種類によって計算が3種類に分かれます: 上書き補正 『現在の技補正の値』と『当てた技の補正値』とを比較して、より小さいほうが今後の技補正になります。 乗算補正 『現在の技補正の値』に『当てた技の補正値(%)』を掛け算します(端数切り捨て)。 減算補正 『現在の技補正の値』から『当てた技の補正値』を引き算します。 (たぶん、0%未満にはなりません。試したことないですが) 計算例 まあ、ダメージ計算スクリプトが用意されてる時点で手計算を練習する意味は皆無なんですが、せっかくなので何か計算してみましょう。 別になんでもいいんですが、自分=Hレン, 相手=ワラキア(立ち食らい)で {JC>JB}>空中氷 → C2~{JB>JC}~{JB>JC}>投げ をやってみます。 1hit目 A = int(1050×1.1) = 1155 B = int(1155×1.0) = 1155 C = int(1155×1.0) = 1155 ダメージ = int(1155×1.0) = 1155 乗算補正なので技補正が90%に。 2hit目 リバースビートを使ったので、ここで技補正が77%になります。 A = int(700×1.1) = 770 B = int(770×0.96875) = 745 C = int(745×0.77) = 573 ダメージ = int(573×1.0) = 573 計1728。 3hit目 A = int(800×1.1) = 880 B = int(880×0.9375) = 825 C = int(825×0.77) = 635 ダメージ = int(635×1.0) = 635 計2363。氷で浮かすので以降の状態補正が88%に。 4hit目 A = int(450×1.1) = 495 B = int(495×0.90625) = 448 C = int(448×0.77) = 344 ダメージ = int(344×) = 302 計2665。 5hit目 A = int(400×1.1) = 440 B = int(440×0.875) = 385 C = int(385×0.77) = 296 ダメージ = int(296×0.88) = 260 計2925。ここで根性値が1に(防御係数&ヒット数補正に影響)。 6hit目 A = int(700×1.05) = 735 B = int(735×0.8125) = 597 C = int(597×0.77) = 459 ダメージ = int(459×0.88) = 403 計3328。ヒット数補正を間違えないように注意。 7hit目 A = int(1050×1.05) = 1102 B = int(1102×0.78125) = 860 C = int(860×0.77) = 662 ダメージ = int(662×0.88) = 582 計3910。技補正が69%に。 8hit目 A = int(700×1.05) = 735 B = int(735×0.75) = 551 C = int(551×0.69) = 380 ダメージ = int(380×0.88) = 334 計4244。 9hit目 A = int(1050×1.05) = 1102 B = int(1102×0.71875) = 792 C = int(792×0.69) = 546 ダメージ = int(546×0.88) = 480 計4724。技補正が62%に。 10hit目(厳密にはヒット数が増えないけど) AAの空中投げは、計算前に90%の乗算補正が発生します。また状態補正を無視することに気を付けます。 A = int(1100×1.05) = 1155 B = int(1155×0.6875) = 794 C = int(794×0.55) = 436 ダメージ = int(492×1.0) = 436 したがって、最終的な合計ダメージは5160になります。 試せばわかりますが、実際のダメージは5155です。最初の3ヒットで1ずつ誤差が出ているのが大きいです。応急処置(擬似単精度)を使うと5159になりますが、いずれにせよ実際より少し大きい値になりました。 AC以前だと逆に実際より小さくなる方向に誤差が出ていたので、内部処理的な原因によると思います。 [1] たぶんMBACでも本当は同様の仕組みなのだろうけど、うまく実測値と一致する値が見つけられない・・・orz そのため、ヒスコハの防御係数を単体時と区別する形で解決している。 [2] たとえば、STANDの状態補正で計算する技を当てると、それ以降もSTAND時の状態補正が使われるようになる。これは、浮かせ技などを当てて再び状態が変化するまで続く。 [3] 実は当然ではない。投げ技の場合はヒット数が増えないことが多い。